1.flash 的介绍
- flash 是一个基于session实现的用于保存数据的集合,其特点是:使用一次就删除
2.flash 的原理
- 在session中储存一个数据,在读取完数据后通过pop将该数据移除
# app.py
from flask import Flask, render_template, session
app = Flask(__name__)
app.secret_key = 'session_salt'
@app.route('/login')
def login():
session['username'] = 'Kevin' # 设置 session
return render_template('login.html')
@app.route('/index')
def index():
username = session.get('username') # 获取 session
print(username) # Kevin
session.pop('username') # 删除获取过数据的session
print(session.get('username')) # None
return render_template('index.html')
if __name__ == '__main__':
app.run()
3.flash 的使用
- 基本使用
# app.py
from flask import Flask, render_template, flash, get_flashed_messages
app = Flask(__name__)
app.secret_key = 'session_salt' # 一定要设置 secret_key,因为 flash 是使用 session 做数据存储的
@app.route('/login')
def login():
flash('临时数据') # 设置 flash
return render_template('login.html')
@app.route('/index')
def index():
flash_data = get_flashed_messages() # 获取 flash
print(flash_data) # ['临时数据'] -> 如果再一次访问 /index 那么结果就是 []
return render_template('index.html')
if __name__ == '__main__':
app.run()
- 分类使用
- category 设置数据的分类
- 默认值: message (即: flash 的数据默认分类为 message)
# app.py
from flask import Flask, render_template, flash, get_flashed_messages
app = Flask(__name__)
app.secret_key = 'session_salt' # 一定要设置 secret_key,因为 flash 是使用 session 做数据存储的
@app.route('/login')
def login():
flash('错误数据1', category='error') # 设置 flash -> 将该数据的分类设置为 error
flash('错误数据2', category='error') # 设置 flash -> 将该数据的分类设置为 error
flash('info数据', category='info') # 设置 flash -> 将该数据的分类设置为 info
flash('临时数据') # 设置 flash(即: 默认将该数据的分类设置为 message)
return render_template('login.html')
@app.route('/index')
def index():
# -----------------------------------------------
flash_error_info_data = get_flashed_messages(category_filter=['error', 'info']) # 获取分类为 error、info 的 flash 数据
print(flash_error_info_data) # ['错误数据1', '错误数据2', 'info数据'] -> 如果再一次访问 /index 那么结果就是 []
# -----------------------------------------------
flash_error_info_data = get_flashed_messages(category_filter=['message']) # 获取分类为 message 的 flash 数据(即: flash默认分类数据)
print(flash_error_info_data) # ['临时数据'] -> 如果再一次访问 /index 那么结果就是 []
# -----------------------------------------------
flash_data = get_flashed_messages() # 获取所有分类的 flash 的数据
print(flash_data) # ['错误数据1', '错误数据2', 'info数据', '临时数据'] -> 如果再一次访问 /index 那么结果就是 []
# -----------------------------------------------
return render_template('index.html')
if __name__ == '__main__':
app.run()